package seqlist.leetcode;

/**
 * 删除排序链表的重复元素，重复元素出现一次
 *
 * @author yuisama
 * @date 2022/04/21 21:08
 **/
public class Num83_DeleteDuplicates {
    //    public ListNode deleteDuplicates(ListNode head) {
//        if(head == null || head.next == null) {
//            return head;
//        }
//        ListNode prev = head;
//        ListNode cur = prev.next;
//        while (cur != null) {
//            if (prev.val == cur.val) {
//                // 此时prev是第一个出现的重复元素，保留
//                // 删除cur对应的重复节点
//                prev.next = cur.next;
//            }else {
//                // 同时移动这两个引用
//                prev = prev.next;
//            }
//            cur = cur.next;
//        }
//        return head;
//    }

    /**
     * 传入一个链表，就能删除其中所有值重复的节点，重复节点只保留一次
     * 返回删除后的链表头节点
     * @param head
     * @return
     */
    public ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        head.next = deleteDuplicates(head.next);
        if (head.val == head.next.val) {
            return head.next;
        }
        return head;
    }
}